import tkinter as tk
from pojo.JsonPage import JsonPage
from pojo.transfer import transfer
from pojo.chatAi import chatAi
from PIL import Image, ImageTk
import os

class PageManager:
    def __init__(self, root):
        self.root = root
        self.pages = {} 

    # 初始化页面但不显示
    def init_pages(self):
        self.pages["JsonPage"] = JsonPage(self)
        self.pages["transfer"] = transfer(self)
        self.pages["chatAi"] = chatAi(self)
        self.show_main_page()  # 显示主页面

    # 显示页面
    def show_page(self, page_name):
        # 清空窗口
        for widget in self.root.winfo_children():
            widget.destroy()

        # 加载指定页面
        page = self.pages.get(page_name)
        if page:
            page.show()

    # 返回主页面
    def show_main_page(self):
        for widget in self.root.winfo_children():
            widget.destroy()

        # 创建一个框架来水平排列按钮
        button_frame = tk.Frame(self.root)
        button_frame.pack(expand=True)

        # 标题
        tk.Label(self.root, text="什么他妈的叫工具箱啊！", font=("SimSun", 18)).pack(pady=20)

        # 定义按钮配置
        buttons = [
            {
                "text": "JSON工具",
                "command": lambda: self.show_page("JsonPage"),
                "icon": "json.png"  # 建议使用 { } 形状的JSON图标
            },
            {
                "text": "局域网文件传输",
                "command": lambda: self.show_page("transfer"),
                "icon": "transfer.png"  # 建议使用文件传输或网络图标
            },
            {
                "text": "AI对话",
                "command": lambda: self.show_page("chatAi"),
                "icon": "chat.png"  # 建议使用对话气泡图标
            }
        ]

        # 创建带图标的按钮
        for btn in buttons:
            frame = tk.Frame(button_frame)
            frame.pack(side=tk.LEFT, padx=10)
            
            try:
                # 加载并调整图标大小
                icon_path = os.path.join("assets", "icons", btn["icon"])
                icon = Image.open(icon_path)
                icon = icon.resize((24, 24), Image.Resampling.LANCZOS)
                photo = ImageTk.PhotoImage(icon)
                
                button = tk.Button(frame, 
                                 text=btn["text"],
                                 image=photo,
                                 compound=tk.LEFT,
                                 command=btn["command"],
                                 padx=10)
                button.image = photo  # 保持图片引用
                button.pack()
            except Exception as e:
                # 如果图标加载失败，创建无图标按钮
                tk.Button(frame, 
                         text=btn["text"],
                         command=btn["command"],
                         padx=10).pack()
